// 入口文件
import Vue from 'vue';
// 导入vuex包
import Vuex from 'vuex';
Vue.use(Vuex);
// 将购物车里面的数据保存到本地存储
var car = JSON.parse(localStorage.getItem('car') || '[]')
// new Vuex.Store()实例得到一个数据仓储对象
var store = new Vuex.Store({
    state:{
    //    count:0
    //{id:要购买商品的id，count：要购买商品的数量， price：要购买商品的价格，selected：false}
    car:car 
    },
    mutations:{
        // 将数据添加到本地存储
        addToCar(state, goodsinfo){
            // 假设在购物车中没有找到对应的商品
            var flag = false;
            state.car.some(item=>{
                if(item.id == goodsinfo.id){
                    item.count += parseInt(goodsinfo.count);
                    flag = true;
                    return true;
                }
            })
            if(!flag){
                state.car.push(goodsinfo);
             }
           localStorage.setItem('car', JSON.stringify(state.car))   
        },
        // 如果在购物车中修改商品的数量， 要同步到location中
        getUpdataCount(state, goodsinfo){
            state.car.some(item=>{
                if(item.id == goodsinfo.id){
                    item.count = parseInt(goodsinfo.count);
                    return true;
                }
            })
            localStorage.setItem('car', JSON.stringify(state.car))
        },
        // 从car中删除数据
        removeFromCar(state, id){
            state.car.some((item, i)=>{
                if(item.id == id){
                    state.car.splice(i, 1);
                    return true;
                }
            })
            //将删除后的数据保存到store中
            localStorage.setItem('car', JSON.stringify(state.car))
        },
        getUpdateSelected(state, info){
            state.car.some(item=>{
                if(item.id == info.id){
                    item.selected = info.selected;
                }
            })
            // 将修改后的数据保存到本地
            localStorage.setItem('car', JSON.stringify(state.car))
        }
    },
    getters:{
        // 实现徽标同点击加入购物车一起变化
        getAllCount(state){
            var c = 0;
            state.car.forEach(item=>{
                c += item.count;
            })
            return c;
        },
        getGoodsCount(state){
            var o =[];
            state.car.forEach(item=>{
                o[item.id] = item.count;
            })
            return o;
        },
        getGoodsSelected(state){
            var o = [];
            state.car.forEach(item=>{
                o[item.id] = item.selected;
            })
            return o;
        },
        getGoodsCountAndAmount(state){
            var o ={
                count:0,
                amount:0,
            }
            state.car.forEach(item=>{
                if(item.selected){
                    o.count += item.count;
                    o.amount += item.price * item.count;
                    // o.amount += parseInt(item.price)*parseInt(item.count);
                }
            })
            return o;
        }
    }
})
// 导入路由
import VueRouter from 'vue-router';
// 手动导入路由
Vue.use(VueRouter);
// 导入vue-resource
import VueResource from 'vue-resource'
Vue.use(VueResource);
// 导入格式化时间的组件
import moment from 'moment'
Vue.filter('dateFormat', function(dataStr, pattern = "YYYY-MM-DD HH:mm:ss"){
    //moment(); // 如果直接调用得到的是当前的时间
    // 得到给定时间的字符串
   return moment(dataStr).format(pattern);
})
// 按需导入Mint-ui里面的组件
// import {Header, Swipe, SwipeItem, Button, Lazyload} from "mint-ui";
// // 在Vue中定义该组件
// Vue.component(Header.name, Header);
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);
// Vue.component(Button.name, Button);
// Vue.use(Lazyload)
// 想要实现图片懒加载的功能，不能再使用按需导入 所以改用全部导入
import MintUI from "mint-ui";
Vue.use(MintUI);
import "./lib/mui/css/mui.min.css"
// 导入缩略图(图片预览功能)
import VuePreview from 'vue-preview'
Vue.use(VuePreview)
// 导入自己的路由模块
import router from './router.js'
// 导入mui的样式
import "./lib/mui/css/mui.min.css"
import './lib/mui/css/icons-extra.css'
// 导入App组件
import app from './App.vue';

var vm = new Vue({
    el:'#app',
    render: c=> c(app),
    router,
    store:store, // 将vuex new出来的对象交给vm
})